3. DECODE와 GROUP BY의 효율적인 사용 :: 오라클 실습[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

오라클 실습
[1]
등록일:2009-05-28 00:15:37 (0%)
작성자:
제목:3. DECODE와 GROUP BY의 효율적인 사용
decode를  남용하면  성능을  저하시키기  때문에  group  by와  in  line  view를  적절히  이용한다.

예제:  qualifier  테이블의  직종별,  성별로  구분하여  등록월별(1/4분기)로  등록된  건수를  가로로  펼쳐서  나타내어라.

Select  job_class,  sex,  
sum(decode(reg_wd,’199701’,1,0)  as  9701월,
sum(decode(reg_wd,’199702’,1,0)  as  9702월,
sum(decode(reg_wd,’199703’,1,0)  as  9703월
from  qualifier
group  by  job_class,  sex;

<해결안>
Select    /*+    full(qualifier)  paraller(qualifier,2)  */  job_class,  sex,  
sum(decode(reg_wd,’199701’,1,0)  as  9701월,
sum(decode(reg_wd,’199702’,1,0)  as  9702월,
sum(decode(reg_wd,’199703’,1,0)  as  9703월
from  qualifier
group  by  job_class,  sex;
병렬조회에  의해서도  성능이  저하되는데  이는  매건  마다  sum함수와  decode를  사용하기  때문이다.    

<개선안>  인라인뷰를  이용한다.
Select  JC,SX,  
sum(decode(R_W,’199701’,CNT,0)  as  9701월,
sum(decode(R_W,’199702’,CNT,0)  as  9702월,
sum(decode(R_W,’199703’,CNT,0)  as  9703월
from  (select  /*+    full(qualifier)  paraller(qualifier,2)  */
                  job_class  as  JC,  sex  as  SX,  reg_wd  as  R_W,  count(*)  as  CNT
                  from  qulifier  
                group  by  job_class,  sex,  reg_wd)
group  by  JC,  SX
  

&#61482;  DECODE의  사용예제
        고객테이블  :  Customer에  대하여  정식  고객이  존재하면  E00,  존재하지  않으면E01을    
        리턴하고,  존재할  경우  서로  등급을  비교하여  값이  같으면  G00,  다르면  G01을  
        리턴한다.
&#61664;  select  a.custo_no,  decode(b.custo_no,  null,  ‘E01’,’E00’),  
                                  decode(b.custo_grade,null,null,A.grade,’G00’,’G01’)
    from  customer_temp  a,  customer  b
    where  a.custo_no  =  b.custo_no(+);

&#61482;  영업점-고객-발송주소에  있어서  특정영업점에  해당하는  고객들의  최근  주소를  가져온다.
        Select  /+  index_desc(발송주소변경_pk)  */  적용일자  
          from  발송주소  
          where  rownum=1
[본문링크] 3. DECODE와 GROUP BY의 효율적인 사용
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=31501
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.